/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package TableModel;

import Beans.BeanAcesso;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Marcos
 */
public class AcessoTableModel extends AbstractTableModel {

    static final int CHECK = 0;
    static final int TELA = 1;
    //static final int REPRESENTANTE = 2;
    //static final int CIDADE = 3;
    //static final int ENDERECO = 4;
    Hashtable<Integer, String> colunas = new Hashtable<Integer, String>();
    ArrayList<BeanAcesso> ListaAcesso;

    public AcessoTableModel(List<BeanAcesso> lista) {
        colunas.put(CHECK, "");
        colunas.put(TELA, "Tela");
        //colunas.put(REPRESENTANTE, "Representate");
        //colunas.put(CIDADE, "Cidade");
        //colunas.put(ENDERECO, "Endereço");
        ListaAcesso = (ArrayList<BeanAcesso>) lista;
    }

    @Override
    public int getRowCount() {
        return ListaAcesso.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        BeanAcesso bean = ListaAcesso.get(rowIndex);

        switch (columnIndex) {
            case CHECK:
                return bean.checked;
            case TELA:
                return bean.getDen_tela();
            /*
             case REPRESENTANTE:
             return bean.getRaz_social();
             case CIDADE:
             return bean.getDen_cidade();
             case ENDERECO:
             return bean.getEnd_repres();
             */
            default:
                return null;
        }
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        BeanAcesso bean = (BeanAcesso) ListaAcesso.get(rowIndex);
        if (bean != null && columnIndex == CHECK) {
            bean.checked = (Boolean) aValue;
        }
        ListaAcesso.set(rowIndex, bean);
    }

    @Override
    public String getColumnName(int column) {
        return colunas.get(column);
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        if (columnIndex == CHECK) {
            return true;
        } else {
            return false;
        }
    }
    
     @Override
    public Class getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case CHECK:
                return Boolean.class;
            case TELA:  
            //case CIDADE:
            //case CODIGO:
            //case ENDERECO:
            default:
                return String.class;
        }
    }
     
     public ArrayList<BeanAcesso> getAcessoChecked() {
        ArrayList<BeanAcesso> tempList = new ArrayList<BeanAcesso>();

        //Laçõ foreach, ele cria um objeto para cada elemento do array.
        for (BeanAcesso bean : ListaAcesso) {

            //Se estiver marcado, ele adiciona na lista temporaria.
            if (bean.checked == true) {
                tempList.add(bean);
                System.out.println("marcado");
            }
        }
        //Retorna a lista temporaria com apenas os istens marcados        
        return tempList;
    }    
}